"""
LLM模块
基于策略模式的大语言模型实现

主要组件：
- BaseLLM: 抽象基类，定义LLM接口
- DeepSeekChat: DeepSeek聊天模型实现
- DeepSeekThink: DeepSeek推理模型实现
- LLMFactory: LLM工厂类
- LLMManager: LLM管理器
"""

from .BaseLLM import BaseLLM
from .DeepSeekChat import DeepSeekChat
from .DeepSeekThink import DeepSeekThink
from .LLMFactory import LLMFactory, LLMManager, llm_manager

__all__ = [
    'BaseLLM',
    'DeepSeekChat',
    'DeepSeekThink',
    'LLMFactory',
    'LLMManager',
    'llm_manager'
]


# 便捷函数
def create_chat_llm(**kwargs) -> DeepSeekChat:
    """
    创建聊天LLM实例
    
    Args:
        **kwargs: 配置参数
        
    Returns:
        DeepSeekChat: 聊天LLM实例
    """
    return LLMFactory.create_chat_llm(**kwargs)


def create_think_llm(**kwargs) -> DeepSeekThink:
    """
    创建推理LLM实例
    
    Args:
        **kwargs: 配置参数
        
    Returns:
        DeepSeekThink: 推理LLM实例
    """
    return LLMFactory.create_think_llm(**kwargs)


def get_llm(model_name: str, **kwargs) -> BaseLLM:
    """
    获取LLM实例（使用管理器缓存）
    
    Args:
        model_name: 模型名称
        **kwargs: 配置参数
        
    Returns:
        BaseLLM: LLM实例
    """
    return llm_manager.get_llm(model_name, **kwargs)


def list_available_models():
    """
    列出所有可用的模型
    
    Returns:
        Dict[str, Dict[str, Any]]: 模型信息字典
    """
    return LLMFactory.list_models()


# 设置默认配置示例
def setup_default_configs():
    """设置默认配置"""
    # DeepSeek Chat默认配置
    llm_manager.set_default_config('deepseek-chat', {
        'temperature': 0.3,
        'max_tokens': 4096,
        'api_base': 'https://api.deepseek.com'
    })

    # DeepSeek Think默认配置
    llm_manager.set_default_config('deepseek-think', {
        'temperature': 0.1,
        'max_tokens': 8192,
        'max_reasoning_tokens': 32768,
        'api_base': 'https://api.deepseek.com'
    })


# 自动设置默认配置
setup_default_configs()
